/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cafeinatpv;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 *
 * @author sempere
 */
public abstract class ImpuestosWEB {

    public String ref;

    public ImpuestosWEB(String url) {
        ref = url;//.substring(0, url.indexOf(".dtd")); //Posible fuente de problemas
        //indexOf... +1/+0/-1 ???
    }

    public ArrayList<Impuesto> calculaImpuesto(String ID) throws MalformedURLException, IOException, SAXException, ParserConfigurationException {
        URL url = new URL(ref + "?producto=" + ID);
        URLConnection conexion = url.openConnection();
        BufferedReader buff = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
        String resultado = "";
        String lin = buff.readLine();
        InputSource is = new InputSource();
        Document parse;
        NodeList elementos;
        ArrayList<Impuesto> vuelta = new ArrayList<Impuesto>();


        while (lin != null) {
            resultado += lin + " ";
            lin = buff.readLine();
        }

        is.setCharacterStream(new StringReader(resultado));
        parse = (DocumentBuilderFactory.newInstance().newDocumentBuilder()).parse(is);
        elementos = parse.getElementsByTagName("iva");
        if (elementos.getLength() > 0) {
            vuelta.add(new Impuesto("iva", Float.parseFloat(elementos.item(0).getTextContent()) * 0.01F, true));
        }
        elementos = parse.getElementsByTagName("especial");
        if (elementos.getLength() > 0) {
            vuelta.add(new Impuesto(elementos.item(0).getAttributes().getNamedItem("concepto").getTextContent(),
                    Float.parseFloat(elementos.item(0).getTextContent()) * 0.01F, false));
        }
        return (vuelta);
    }
}
